<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <script>
    /* 
    ES5默认是非严格模式
    开启严格模式: 'use strict'
    严格模式的变化:
      | 编码               | 非严格模式       | 严格模式                      |
      | 给未声明的变量赋值 | 自动创建全局变量 | 报错(未定义)                  |
      | 函数中的this       | 可以指向window   | 不能指向window, 而是undefined |
      | 同名形参      | 允许             | 不允许                        |
      
    */
   /*  | 给未声明的变量赋值 | 自动创建全局变量 | 报错(未定义)          */
   'use strict'
    // a = 1 // ReferenceError: a is not defined
    // function fn() {
    //   // 'use strict'
    //   b = 2 // ReferenceError: b is not defined
    // }
    // fn()
    // console.log(a, b)
    // var a = b // b不会自动创建

    /* | 函数中的this       | 可以指向window   | 不能指向window, 而是undefined | */
    // function fn() {
    //   console.log(this)
    // }
    // fn()

    /* | 同名形参      | 允许             | 不允许                        | */
    // function fn(a, a) { // SyntaxError: Duplicate parameter name not allowed in this context
    //   console.log(a)
    // }
    // fn(2, 3)

    // 同名的变量是没问题的
    // var a = 2
    // var a = 3
    // function fn() {
    // }
    // function fn() {
    // }

  </script>
</body>
</html>